home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 11.4 KB | 413 lines |
- 1 KEY(10) ON:ON KEY(10) GOSUB 3
- 2 GOTO 5
- 3 RUN"MENU.BAT"+CHR$(13)
- 5 CLS
- 6 LOCATE 23,24:PRINT "Press F10 to EXIT program.
- 100 REM -----------------------------
- 110 N$= "BUSINESS PROGRAMS"
- 120 REM -----------------------------
- 130 GOSUB 6200 'INITIALIZE
- 140 REM SET UP MENU ARRAY
- 150 X$(1)="STRAIGHT-LINE DEPRECIATION"
- 160 X$(2)="DECLINING-BALANCE DEPRECIATION"
- 170 X$(3)="SUM-OF-YEARS'-DIGITS DEPRECIATION"
- 180 X$(4)="BREAK-EVEN POINT"
- 190 X$(5)="ECONOMIC ORDERING QUANTITY"
- 200 X$(6)="SALES PRICE WITH DISCOUNT"
- 210 X$(7)="WEIGHTED AVERAGE"
- 220 X$(8)="SALESPERSON' COMMISSION"
- 230 X$(9)="WAGES WITH OVERTIME"
- 240 X$(10)="EXECUTIVE DECISION MAKER"
- 250 N=10 : GOSUB 7000 'DISPLAY MENU
- 260 ON X GOSUB 280,500,740,990,1140,1310,1550,1840,2010,2210
- 270 Q2$="RUN" : GOSUB 3400 'ASK FOR ANOTHER RUN
- 271 IF YN$="N" THEN END ELSE GOTO 100
- 280 REM ----------------------------------
- 290 N$= "STRAIGHT-LINE DEPRECIATION"
- 300 REM ----------------------------------
- 310 GOSUB 6200 : K=1
- 320 REM GET INPUT PARAMETERS
- 330 Q1$="ENTER DATA" : Q2$=""
- 340 Q3$="PRES. BOOK VALUE ($)" : GOSUB 6600
- 350 Q3$="SALVAGE VALUE ($)" : GOSUB 6600
- 360 Q3$="LIFE (YRS) " : GOSUB 6600
- 370 REM PRINT DEPR SCHEDULE
- 380 D=(PAR(1)-PAR(2))/PAR(3)
- 390 PRINT
- 400 PRINT"YEAR DEPR($) VALUE($)"
- 410 FOR A= 1 TO PAR(3)
- 420 PRINT A; TAB(6);
- 430 PRINT USING "#######,.##";D,PAR(1)-D*A
- 440 IF A <> 12 THEN 470
- 450 GOSUB 7400 'WAIT FOR KEY
- 460 LOCATE 8,1 'RESET POINTER
- 470 NEXT A
- 480 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 490 IF YN$="N" THEN RETURN ELSE GOTO 280
- 500 REM ----------------------------------------
- 510 N$= "DECLINING-BALANCE DEPRECIATION"
- 520 REM ----------------------------------------
- 530 GOSUB 6200 : K=1
- 540 REM GET INPUT PARAMETERS
- 550 Q1$="ENTER DATA" : Q2$=""
- 560 Q3$="PRES. BOOK VALUE ($)" : GOSUB 6600
- 570 Q3$="LIFE (YRS) " : GOSUB 6600
- 580 Q3$="% ACCEL DEPRECIATION" : GOSUB 6600
- 590 REM PRINT DEPR SCHEDULE
- 600 RV=PAR(1)
- 610 PRINT
- 620 PRINT"YEAR DEPR($) VALUE($)"
- 630 FOR A= 1 TO PAR(2)
- 640 PRINT A; TAB(6);
- 650 D=RV*PAR(3)/100/PAR(2)
- 660 PRINT USING "#######,.##";D,RV-D
- 670 RV=RV-D
- 680 IF A <> 12 THEN 710
- 690 GOSUB 7400 'WAIT
- 700 LOCATE 8,1
- 710 NEXT A
- 720 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 730 IF YN$="N" THEN RETURN ELSE GOTO 500
- 740 REM -------------------------------------------
- 750 N$= "SUM-OF-YEARS'-DIGITS DEPRECIATION"
- 760 REM -------------------------------------------
- 770 GOSUB 6200 : K=1
- 780 REM GET INPUT PARAMETERS
- 790 Q1$="ENTER DATA" : Q2$=""
- 800 Q3$="PRES. BOOK VALUE ($)" : GOSUB 6600
- 810 Q3$="SALVAGE VALUE ($)" : GOSUB 6600
- 820 Q3$="LIFE (YRS) " : GOSUB 6600
- 830 REM PRINT DEPR SCHEDULE
- 840 D=PAR(1)-PAR(2)
- 850 RV=PAR(1)
- 860 PRINT
- 870 PRINT"YEAR DEPR($) VALUE($)"
- 880 FOR A= 1 TO PAR(3)
- 890 D1=D*(PAR(3)+1-A)/(PAR(3)*(PAR(3)+1)/2)
- 900 PRINT A; TAB(6);
- 910 PRINT USING "#######,.##";D1,RV-D1
- 920 RV=RV-D1
- 930 IF A <> 12 THEN 960
- 940 GOSUB 7400
- 950 LOCATE 8,1
- 960 NEXT A
- 970 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 980 IF YN$="N" THEN RETURN ELSE GOTO 740
- 990 REM ------------------------------
- 1000 N$= "BREAK-EVEN POINT"
- 1010 REM ------------------------------
- 1020 GOSUB 6200 : K=1
- 1030 REM GET INPUT PARAMETERS
- 1040 Q1$="ENTER DATA" : Q2$=""
- 1050 Q3$="FIXED COSTS ($)" : GOSUB 6600
- 1060 Q3$="COST PER UNIT ($)" : GOSUB 6600
- 1070 Q3$="SALES PRICE ($)" : GOSUB 6600
- 1080 PRINT
- 1090 PRINT "BREAK-EVEN POINT -> ";
- 1100 US=INT(PAR(1)/(PAR(3)-PAR(2))*100+0.5)/100
- 1110 PRINT USING "#####,"; US; :PRINT " UNITS"
- 1120 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 1130 IF YN$="N" THEN RETURN ELSE GOTO 990
- 1140 REM ------------------------------------
- 1150 N$= "ECONOMIC ORDERING QUANTITY"
- 1160 REM ------------------------------------
- 1170 GOSUB 6200 : K=1
- 1180 REM GET INPUT PARAMETERS
- 1190 Q1$="ENTER DATA" : Q2$=""
- 1200 Q3$="COST TO ORDER ($)" : GOSUB 6600
- 1210 Q3$="ANNUAL UNITS USED " : GOSUB 6600
- 1220 Q3$="UNIT CARRYING COST($)" : GOSUB 6600
- 1230 REM COMPUTE AND PRINT
- 1240 PRINT
- 1250 EOQ=INT(SQR(2*PAR(1)*PAR(2)/PAR(3)))
- 1260 PRINT " EOQ = ";
- 1270 PRINT USING "#####,"; EOQ;
- 1280 PRINT " UNITS"
- 1290 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 1300 IF YN$="N" THEN RETURN ELSE GOTO 1140
- 1310 REM -----------------------------------
- 1320 N$= "SALES PRICE WITH DISCOUNT"
- 1330 REM -----------------------------------
- 1340 GOSUB 6200 : K=1
- 1350 REM GET INPUT PARAMETERS
- 1360 Q1$="ENTER DATA" : Q2$=""
- 1370 Q3$="RETAIL PRICE ($)" : GOSUB 6600
- 1380 Q3$="DISCOUNT (%)" : GOSUB 6600
- 1390 Q3$="SALES TAX (%)" : GOSUB 6600
- 1400 REM COMPUTE AND PRINT
- 1410 PRINT
- 1420 PRINT " PRICE";TAB(24);
- 1430 PRINT USING "$$####,.##";PAR(1)
- 1440 D=PAR(1)*PAR(2)/100
- 1450 PRINT " DISCOUNT";TAB(24);
- 1460 PRINT USING "$$####,.##";D
- 1470 T=(PAR(1)-D)*PAR(3)/100
- 1480 PRINT " TAX";TAB(24);
- 1490 PRINT USING "$$####,.##";T
- 1500 PRINT
- 1510 PRINT "TOTAL";TAB(24);
- 1520 PRINT USING "$$####,.##";PAR(1)-D+T
- 1530 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 1540 IF YN$="N" THEN RETURN ELSE GOTO 1310
- 1550 REM ------------------------------
- 1560 N$= "WEIGHTED AVERAGE"
- 1570 REM ------------------------------
- 1580 DIM D(100,1)
- 1590 GOSUB 6200 : K=1
- 1600 REM GET INPUT PARAMETERS
- 1610 PRINT "ENTER DATA, RETURN WHEN DONE"
- 1620 PRINT : PRINT "VALUE UNITS"
- 1630 ND=0
- 1640 J=7
- 1650 LOCATE J,1 : PRINT " ";
- 1660 LOCATE J,1 : INPUT D(ND,0)
- 1670 LOCATE J,12 : INPUT D(ND,1)
- 1680 IF D(ND,1)=0 THEN 1720
- 1690 ND=ND+1
- 1700 J=J+1
- 1710 IF J=17 THEN 1640 ELSE 1650
- 1720 REM NOW COMPUTE AND PRINT
- 1730 AVE=0 : U=0
- 1740 FOR I = 0 TO ND-1
- 1750 AVE= AVE+D(I,0)*D(I,1)
- 1760 U=U+D(I,1)
- 1770 NEXT I
- 1780 AVE=AVE/U
- 1790 LOCATE 16,3
- 1800 PRINT "WEIGHTED AVERAGE IS : ";
- 1810 PRINT USING "######,"; AVE
- 1820 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 1830 IF YN$="N" THEN RETURN ELSE GOTO 1590
- 1840 REM ----------------------------------
- 1850 N$= "SALESPERSON'S COMMISSION"
- 1860 REM ----------------------------------
- 1870 GOSUB 6200 : K=1
- 1880 REM GET INPUT PARAMETERS
- 1890 Q1$="ENTER DATA" : Q2$=""
- 1900 Q3$="MONTHLY DRAW ($)" : GOSUB 6600
- 1910 Q3$="MONTHLY SALES ($)" : GOSUB 6600
- 1920 Q3$="COMMISSION (%) " : GOSUB 6600
- 1930 REM COMPUTE AND PRINT
- 1940 PRINT
- 1950 PRINT "COMMISSION EARNED ";TAB(24)
- 1960 PRINT USING "$$####,.##";PAR(2)*PAR(3)/100
- 1970 PRINT"DUE (LESS DRAW) ";TAB(24)
- 1980 PRINT USING "$$####,.##";PAR(2)*PAR(3)/100-PAR(1)
- 1990 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 2000 IF YN$="N" THEN RETURN ELSE GOTO 1840
- 2010 REM ------------------------------
- 2020 N$= "WAGES WITH OVERTIME"
- 2030 REM ------------------------------
- 2040 GOSUB 6200 : K=1
- 2050 REM GET INPUT PARAMETERS
- 2060 Q1$="ENTER DATA" : Q2$=""
- 2070 Q3$="BASE RATE ($/HR)" : GOSUB 6600
- 2080 Q3$="OT PAY FACTOR" : GOSUB 6600
- 2090 Q3$="BASE HOURS WORKED" : GOSUB 6600
- 2100 Q3$="OT HOURS WORKED" : GOSUB 6600
- 2110 REM COMPUTE AND PRINT
- 2120 PRINT
- 2130 PRINT " BASE PAY ";TAB(24)
- 2140 PRINT USING "$$####,.##";PAR(1)*PAR(3)
- 2150 PRINT " OT PAY ";TAB(24)
- 2160 PRINT USING "$$####,.##";PAR(1)*PAR(2)*PAR(4)
- 2170 PRINT " TOTAL PAY";TAB(24)
- 2180 PRINT USING "$$####,.##";PAR(1)*PAR(3)+PAR(1)*PAR(2)*PAR(4)
- 2190 Q2$="COMPUTE" : GOSUB 3400 'ASK FOR ANOTHER
- 2200 IF YN$="N" THEN RETURN ELSE GOTO 2010
- 2210 REM ----------------------------------
- 2220 N$= "EXECUTIVE DECISION MAKER"
- 2230 REM ----------------------------------
- 2240 GOSUB 6200 : K=1
- 2250 PRINT "PLEASE TYPE YOUR QUESTION"
- 2260 PRINT "=>";
- 2270 INPUT Q$ : Y=LEN(Q$)
- 2280 IF Y < 6 THEN 2300
- 2290 Y=INT(Y/2) : GOTO 2280
- 2300 ON Y GOTO 2310,2320,2330,2340,2350
- 2310 PRINT "NOT ON YOUR LIFE" : GOTO 2360
- 2320 PRINT "GO FOR IT !! " : GOTO 2360
- 2330 PRINT "YOU'D BETTER BELIEVE IT" : GOTO 2360
- 2340 PRINT "FLIP A COIN !" : GOTO 2360
- 2350 PRINT "MAKE YOUR BREAK- QUICKLY"
- 2360 Q2$="ASK A QUESTION" : GOSUB 3400 'ASK FOR ANOTH
- 2370 IF YN$="N" THEN RETURN ELSE GOTO 2210
- 3400 REM "ANOTH"
- 3401 ' --------------------------------
- 3402 ' ASK FOR ANOTHER RUN
- 3403 '
- 3404 'THIS ROUTINE ASKS THE USER WHETHER TO CONTINUE
- 3405 '
- 3406 'CALLING PARAMETERS:
- 3407 ' Q2$= STRING TO SPECIFY WHAT OPERATION TO DO
- 3408 '
- 3409 'RETURNED PARAMETERS:
- 3410 ' YN$= A "Y" OR "N" FOR YES OR NO
- 3411 '
- 3412 ' --------------------------------
- 3420 Q1$="WOULD YOU LIKE TO "
- 3430 Q3$="AGAIN Y OR N ?"
- 3440 GOSUB 5000 'PRESENT DIALOG
- 3450 GOSUB 7800 'ASK YES OR NO
- 3460 RETURN
- 5000 REM "DIALOG"
- 5001 ' -------------------------------
- 5002 ' DIALOGUE
- 5003 '
- 5004 'CALLING PARAMETERS:
- 5005 ' Q1$,Q2$,Q3$, = QUESTIONS TO DISPLAY
- 5006 '
- 5007 'RETURNED PARAMETERS:
- 5008 ' NONE
- 5009 '
- 5010 'COMMENT: UNUSED QUESTION STRINGS SHOULD BE SET
- 5011 ' TO NULL ("")
- 5012 '
- 5013 ' -------------------------------
- 5020 FOR I= 20 TO 23
- 5030 LOCATE I,1
- 5040 IF I > 20 THEN 5080
- 5050 FOR J= 1 TO 40 'DRAW A BORDER
- 5060 PRINT "-";
- 5070 NEXT J
- 5080 IF I = 21 THEN PRINT Q1$; 'FIRST QUESTION
- 5090 IF I = 22 THEN PRINT Q2$; 'SECOND QUESTION
- 5100 IF I = 23 THEN PRINT Q3$; 'THIRD QUESTION
- 5109 REM RESTORE CURSOR HERE AFTER 3RD QUEST
- 5110 CP1=POS(N)
- 5120 CP=POS(N) 'CURSOR COLUMN POSITION
- 5130 IF CP>40 THEN 5150
- 5140 PRINT " "; : GOTO 5120 'ERASE ANY PRIOR INFO
- 5149 REM RESTORE CURSOR FOR USER RESPONSE
- 5150 LOCATE I,CP1
- 5160 NEXT I
- 5170 RETURN
- 5400 REM "INCH"
- 5401 ' ------------------------------
- 5402 ' INPUT CHARACTER
- 5403 '
- 5404 'CALLING PARAMETERS:
- 5405 ' NONE
- 5406 '
- 5407 'RETURNED PARAMETERS:
- 5408 ' CH$=INPUT CHARACTER
- 5409 '
- 5410 ' ------------------------------
- 5420 REM WAIT FOR INPUT CHARACTER
- 5430 CH$= INKEY$ : IF CH$="" THEN 5430
- 5440 Z=ASC(CH$)
- 5450 IF Z < 97 OR Z > 122 THEN 5470
- 5460 Z=Z-32
- 5470 CH$=CHR$(Z)
- 5480 RETURN
- 6200 REM "INIT"
- 6201 '----------------------------------
- 6202 ' INITIALIZE DISPLAY
- 6203 '
- 6204 'THIS ROUTINE CLEARS THE SCREEN
- 6205 ' AND PRINTS THE PROGRAM TITLE
- 6206 'CALLING PARAMETERS:
- 6207 ' N$=TITLE OF PROGRAM
- 6208 '
- 6209 'RETURNED PARAMETERS:
- 6210 ' NONE
- 6211 '
- 6212 ' ----------------------------------
- 6220 CLS 'CLEAR SCREEN
- 6230 PRINT N$ : PRINT 'TITLE
- 6240 KEY OFF
- 6250 RETURN
- 6600 REM "INPAR"
- 6601 ' --------------------------------
- 6602 ' INPUT PARAMETERS
- 6603 '
- 6604 'CALLING PARAMETERS:
- 6605 ' Q1$,Q2$=USER INSTRUCTIONS
- 6606 ' Q3$=NAME OF DATA ITEM
- 6607 '
- 6608 'RETURNED PARAMETERS:
- 6609 ' PAR(K)=THE DATA ITEM OBTAINED
- 6610 '
- 6611 'COMMENT: CALL WITH K=1 FOR FIRST DATA ITEM
- 6612 ' K AUTOMATICALLY UPDATED
- 6613 '
- 6614 ' -------------------------------
- 6620 GOSUB 5000 'ASK QUESTIONS
- 6630 INPUT PAR(K) 'GET VALUE
- 6640 REM ECHO QUESTION AND ANSWER
- 6650 LOCATE K+2,3
- 6660 PRINT Q3$; TAB(24);
- 6670 PRINT USING "######,.##"; PAR(K)
- 6680 K=K+1
- 6690 RETURN
- 7000 REM "MENU"
- 7001 ' ------------------------------
- 7002 ' MENU PROGRAM
- 7003 '
- 7004 'THIS PROGRAM DISPLAYS A MENUE
- 7005 ' AND CHOOSES A PROGRAM
- 7006 'CALLING PARAMETERS:
- 7007 ' N= NO. OF MENU ITEMS
- 7008 ' X$(I)= ARRAY OF PROGRAM NAMES
- 7009 '
- 7010 'RETURNED PARAMETERS:
- 7011 ' X=PROGRAM NUMBER CHOSEN
- 7012 '
- 7013 ' ------------------------------
- 7020 CLS
- 7030 FOR I = 1 TO N 'DISPLAY MENU
- 7040 IF I=10 THEN PRINT 0; ELSE PRINT I;
- 7050 PRINT "= " ; X$(I)
- 7060 NEXT I
- 7070 Q1$="" : Q2$=""
- 7080 Q3$="CHOOSE PROGRAM :"
- 7085 PRINT:PRINT" F10 to EXIT program.
- 7090 GOSUB 5000 'ASK QUESTIONS
- 7100 GOSUB 5400 'INPUT CHAR
- 7110 X= VAL(CH$)
- 7119 REM SEE IF CHAR IN RANGE
- 7120 IF X>=1 AND X<=N THEN RETURN
- 7130 IF X=0 AND N=10 THEN 7140 ELSE 7150
- 7140 X=10 : RETURN
- 7150 Q1$="ILLEGAL CHOICE, CHOOSE AGAIN"
- 7160 GOSUB 5000
- 7170 GOTO 7100
- 7400 REM "PAUSE"
- 7401 ' -------------------------------
- 7402 ' WAIT FOR ANY KEY
- 7403 '
- 7404 'THIS ROUTINE WAITS FOR USER TO STRIKE KEY
- 7405 '
- 7406 'CALLING PARAMETERS:
- 7407 ' NONE
- 7408 '
- 7409 'RETURNED PARAMETERS
- 7410 ' NONE
- 7411 '
- 7412 ' -------------------------------
- 7420 Q1$="STRIKE ANY KEY TO CONTINUE"
- 7430 Q2$="" : Q3$=""
- 7440 GOSUB 5000 'CALL DIALOG
- 7450 X$=INKEY$ : IF X$ = "" THEN 7450 'WAIT FOR KEY
- 7460 RETURN
- 7800 REM "YESNO"
- 7801 ' -------------------------------
- 7802 ' YES-NO
- 7803 '
- 7804 'CALLING PARAMETERS:
- 7805 ' NONE
- 7806 '
- 7807 'RETURNED PARAMETERS:
- 7808 ' YN$= CONTAINS A Y OR N
- 7809 '
- 7810 ' -------------------------------
- 7815 LOCATE 24,40:PRINT" F10 to EXIT program.
- 7820 REM WAIT FOR KEY TO BE STRUCK
- 7830 YN$=INKEY$ : IF YN$="" THEN 7830
- 7840 IF YN$="y" THEN YN$="Y"
- 7850 IF YN$="n" THEN YN$="N"
- 7860 IF YN$ = "Y" OR YN$ = "N" THEN 7890
- 7870 REM NOT YES OR NO TRY AGAIN
- 7880 GOTO 7830
- 7890 PRINT YN$ : RETURN
-